package br.usp.ime.ingpos.modelo;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.OneToMany;

import br.usp.ime.ingpos.modelo.dao.InscricaoDAO;

@Entity
public class Orientador extends Usuario implements Serializable {

	private static final long serialVersionUID = -1645557132155311928L;

	@Column(length = 100)
	private String loginIME;
	
	@Column
	private int quantidadeOrientandosDesejados;
	
	@Column
	private int quantidadeOrientandosAtribuidos;
	
	@OneToMany
	private Set<AreaDePesquisa> areasDePesquisa;

	public Orientador() {
		super();
		quantidadeOrientandosAtribuidos = 0;
		quantidadeOrientandosDesejados = 0;
	}
	
	public Orientador(Usuario usuario) {
		super(usuario);
		quantidadeOrientandosAtribuidos = 0;
		quantidadeOrientandosDesejados = 0;
	}

	public Orientador(String nome) {
		super();
		
		DadosPessoais dadosPessoais = this.getDadosPessoais();
		
		if( dadosPessoais == null )
			dadosPessoais = new DadosPessoais();
		
		dadosPessoais.setNomeCompleto(nome);
		
		quantidadeOrientandosAtribuidos = 0;
		quantidadeOrientandosDesejados = 0;
	}

	@Override
	public String toString() {
		return this.getDadosPessoais().getNomeCompleto();
	}
	
	public String getLoginIME() {
		return loginIME;
	}

	public void setLoginIME(String loginIME) {
		this.loginIME = loginIME;
	}
    
	public Set<AreaDePesquisa> getAreasDePesquisa()
	{
		return areasDePesquisa;
	}

	public void inserirAreaDePesquisa(AreaDePesquisa areaDePesquisa) {
		if (this.areasDePesquisa == null)
			this.areasDePesquisa = new HashSet<AreaDePesquisa>();

		this.areasDePesquisa.add(areaDePesquisa);
	}
	
	public void removerAreaDePesquisa(AreaDePesquisa areaDePesquisa) {
		if (this.areasDePesquisa == null)
			this.areasDePesquisa = new HashSet<AreaDePesquisa>();

		this.areasDePesquisa.remove(areaDePesquisa);
	}

	public int getQuantidadeOrientandosDesejados() {
		return quantidadeOrientandosDesejados;
	}

	public void setQuantidadeOrientandosDesejados(int quantidadeOrientandosDesejados) {
		this.quantidadeOrientandosDesejados = quantidadeOrientandosDesejados;
	}

	public int getQuantidadeOrientandosAtribuidos() {
		return quantidadeOrientandosAtribuidos;
	}

	public void setQuantidadeOrientandosAtribuidos(
			int quantidadeOrientandosAtribuidos) {
		this.quantidadeOrientandosAtribuidos = quantidadeOrientandosAtribuidos;
	}
	
	
}
